<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>工具向导: 使用 Rational Rose 反向设计代码</title>
<meta content="ToolMentor" name="uma.type">
<meta content="reverse_engineer_code" name="uma.name">
<meta content="使用 Rational Rose 反向设计代码" name="uma.presentationName">
<meta content="Tool:rup_rose_classic:Rational Rose" name="uma.category">
<meta name="element_type" content="tool_mentor">
<meta content="Rational Rose" name="tool">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_gpYSoAILEdq-_NKqZM1EhA", "_qS-iwAIOEdqTna4sZVFRow", "{06FB737B-5D74-4C3B-98F4-36153CFB2E34}", "{D674D96E-1A37-48D1-B120-6145C9802E3E}"]}, {view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_zRigkAILEdq-_NKqZM1EhA", "_U5tiUAISEdqTna4sZVFRow", "{06FB737B-5D74-4C3B-98F4-36153CFB2E34}", "{D674D96E-1A37-48D1-B120-6145C9802E3E}"]}, {view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_AUv4MAIMEdq-_NKqZM1EhA", "_5ZuQsAIUEdqEutyfYo0quQ", "{06FB737B-5D74-4C3B-98F4-36153CFB2E34}", "{D674D96E-1A37-48D1-B120-6145C9802E3E}"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_jD8dUAIbEdqEutyfYo0quQ", "_F1OgYAIbEdqEutyfYo0quQ", "{06FB737B-5D74-4C3B-98F4-36153CFB2E34}", "{D674D96E-1A37-48D1-B120-6145C9802E3E}"]}];
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="{D674D96E-1A37-48D1-B120-6145C9802E3E}"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">工具向导：使用 Rational Rose 反向设计代码</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../../images/toolmentor.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">此工具向导描述 Rational Rose 将多种元素反向设计为 Rose 模型的功能。</td>
</tr>
<tr>
<td>工具：<a href="./../../../core.base_rup/tools/rup_rose_classic_20F2524D.html" guid="{06FB737B-5D74-4C3B-98F4-36153CFB2E34}">Rational Rose</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">相关元素</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.base_rup/tasks/incorporate_design_elements_D3C582B5.html" guid="{5C647173-4E32-4594-96A9-2548B47722FA}">合并现有设计元素</a>
</li>
<li>
<a href="./../../../core.base_rup/tasks/identify_design_elements_E884AB82.html" guid="{97D7343A-6993-4AB7-8F86-4DAC8C9075C8}">确定设计元素</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">主要描述</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a> 
<h3>
    概述
</h3>
<p>
    此工具向导描述 Rational Rose 将多种元素反向设计为 Rose 模型的功能，包括源语言和二进制代码、类型库、基于 Web 的元素、XML DTD 和数据库模式等各种元素。
</p>
<p>
    反向设计过程检查现有资源，重新获得有关其设计的信息，然后使用该信息生成或更新表示项目逻辑结构的模型。它使您能够复用多个模型或系统公用的元素。通过在 Rational Rose
    中分析和设计，从模型生成源代码，开发源代码，然后将该源代码反向设计回 Rose 模型，它还使您能够迭代开发（双向设计）系统。
</p>
<p>
    以下 Rational Rose 外挂程序提供了反向设计功能：
</p>
<ul>
    <li>
        <a href="#Visual C">Visual C++</a>
    </li>
    <li>
        <a href="#Visual Basic">Visual Basic</a>
    </li>
    <li>
        <a href="#Type Library Importer">Type Library Importer</a>
    </li>
    <li>
        <a href="#ANSI C">ANSI C++</a>
    </li>
    <li>
        <a href="#Rose J (Java)">Rose J（Java）</a>
    </li>
    <li>
        <a href="#CORBA">CORBA</a>
    </li>
    <li>
        <a href="#XML DTD">XML DTD</a>
    </li>
    <li>
        <a href="#Web Modeler">Web Modeler</a>
    </li>
    <li>
        <a href="#Data Modeler">Data Modeler</a>
    </li>
</ul>
<h3>
    <a id="Visual C++" name="Visual C++">Visual C++</a>
</h3>
<p>
    通过使用 Rational Rose Visual C++，您能够反向设计 Visual C++ 源代码。其功能包括：&nbsp;
</p>
<ul>
    <li>
        完全反向设计通用的 Visual C++ 语言构造（如：关系、类型定义、枚举、消息／对象／COM 映射、构造函数和析构函数）&nbsp;
    </li>
    <li>
        基于对话支持反向设计 Visual C++ 元素代码
    </li>
    <li>
        代码或模型在更改时自动更新的自动同步方式
    </li>
    <li>
        与 Microsoft 的 Visual Studio 相集成，还包括 IDL 文件
    </li>
    <li>
        支持 Visual C++ 模板类和用户指定的代码模式
    </li>
</ul>
<h3>
    &nbsp;<a id="Visual Basic" name="Visual Basic">Visual Basic</a>
</h3>
<p>
    通过与 Microsoft Visual Basic 6.0 环境的紧密集成，Rational Rose Visual Basic 语言支持外挂程序使您能够通过更改 Visual Basic 源代码来更新并随后开发 Rose 模型。
    在更改源代码时，可扩展和可定制的基于对话的工具指导您顺利完成更新模型的过程。
</p>
<p>
    包括以下功能：
</p>
<ul>
    <li>
        根据相应源代码项目的更改更新模型元素
    </li>
    <li>
        在删除源代码时更新模型元素的同步方式
    </li>
    <li>
        在模型中导入类型库&nbsp;
    </li>
    <li>
        通过使用 Rose Visual Studio RTE Extensibility 扩展双向设计并使其自动化的功能
    </li>
</ul>
<h3>
    <a id="Type Library Importer" name="Type Library Importer">Type Library Importer</a>
</h3>
<p>
    Rational Rose Type Library Importer 使您能够将 COM 组件的类型库（.dll、.exe、.ocx、.olb、和 .tlb 文件）导入 Rose 模型中。 在模型中，类型库表示为组件和逻辑软件包。
    逻辑软件包包含导入的 COM 组件（如，共用类、接口等）的类型信息定义的类型库项。 每一项都用一个类来表示。
</p>
<p>
    通过将类型库导入到模型中，无论类用什么语言实施，您都可以显示模型中的类是如何使用、实施或者依赖于其他 COM 组件中的类和接口的。 Type Library Importer 的功能包括：
</p>
<ul>
    <li>
        基于对话支持 Type Library Importer 控件
    </li>
    <li>
        快速导入方式可导入类占位符，完整导入方式可导入带所有操作和属性的类
    </li>
    <li>
        在 Visual Studio 中的 Object Browser 或 OLE/COM Viewer 中表示类型库
    </li>
    <li>
        使用 Rose Visual Studio RTE Extensibility 通过运行 Type Library Importer 从脚本或程序扩展和定制类型库导入。
    </li>
</ul>
<p>
    <img height="16" alt="帮助手册图标" hspace="0" src="./../../../core.base_rup/resources/helpbook.gif" width="16" border="0" />
    使用的编程语言不同，类型库的使用方法也会不同。 有关更多信息，请参阅 Rational Rose 的联机帮助和您使用的语言外挂程序的文档。
</p>
<h3>
    &nbsp;<a id="ANSI C++" name="ANSI C++">ANSI C++</a>
</h3>
<p>
    Rational Rose ANSI C++ 外挂程序使您能够将源代码反向设计成 Rose 模型。ANSI C++ 支持反向设计成空模型，该过程创建新的模型元素、反向设计到现有模型，并将模型元素更改为与该代码相对应。它提供：
</p>
<ul>
    <li>
        支持从分析到设计的模型演进
    </li>
    <li>
        支持 C++ 语言，同时并不限定于某家供应商提供的 C++ 编译器
    </li>
    <li>
        使模型同步并根据多个迭代生成 C++ 代码的往返工程
    </li>
    <li>
        对代码所作的更改将在反向设计过程中带回模型
    </li>
    <li>
        设计、建模和可视化所有 C++ 构造（包括类、模板、名称空间、继承和类成员函数）
    </li>
    <li>
        支持大的框架
    </li>
</ul>
<h3>
    <a id="Rose J (Java)" name="Rose J (Java)">Rose J（Java）</a>
</h3>
<p>
    Rational Rose J 使您能够将现有的 Java 元素反向设计成 Rose 模型。这些元素包括：
</p>
<ul>
    <li>
        源文件（.java 文件）
    </li>
    <li>
        字节码文件（.class 文件）
    </li>
    <li>
        Java 归档文件（.zip、.cab、.jar 和 .war 文件）
    </li>
    <li>
        Java Enterprise JavaBeans
    </li>
    <li>
        Java Servlets
    </li>
</ul>
<p>
    Rational Rose J 还支持与 IBM VisualAge for Java 的集成。
</p>
<h3>
    <a id="CORBA" name="CORBA">CORBA</a>&nbsp;
</h3>
<p>
    Rational Rose CORBA 使您能够将任何 CORBA 兼容的 IDL 代码反向设计成 Rose 模型。每个反向设计的 .idl 文件都变成一个组件，并被置于模型的组件视图中。
</p>
<p>
    当反向设计先前正向设计的 IDL 代码（即，从 CORBA 模型元素生成的代码）时，除非您在 IDL 代码中输入的新信息或更改被带回到该模型中，否则您原先的模型元素保持不变。这一规则也有例外，那就是 Rational Rose
    构造只用于一次性正向设计的特例。
</p>
<h3>
    &nbsp;<a id="XML DTD" name="XML DTD">XML DTD</a>
</h3>
<p>
    Rational Rose XML DTD（可扩展标记语言文档类型定义）反向设计 XML DTD（.dtd 文件），以创建在 DTD 中显示结构、元素和关系的 Rose 类图。您可以添加和除去 XML DTD
    元素，还可以更改类图中通过反向设计过程创建的元素之间的关系。在使用 Rose XML DTD 语法检查程序验证了 XML 后，您可以从该 Rose 类图生成一个新的 DTD。
</p>
<p>
    Rational Rose XML DTD 提供了构造型类，可用来生成 XML DTD 并对其建模。
</p>
<h3>
    <a id="Web Modeler" name="Web Modeler">Web Modeler</a>
</h3>
<p>
    Rational Rose Web Modeler 对 Web 应用程序中的 Active Server Page（ASP）、Java Server Page（JSP）和 HTML 文件进行语法分析，以使用表示客户端页面、服务器页面和
    HTML 表单的构造型类创建 Web 应用程序模型。您可以修改 Web 应用程序模型，并从 Web Modeler 生成 .asp、.jsp、.html 和 .htm 文件。
</p>
<h3>
    <a id="Data Modeler" name="Data Modeler">Data Modeler</a>
</h3>
<p>
    Rational Rose Data Modeler 的功能允许数据库设计员和软件开发人员使用相同工具交流需求。作为数据库设计员或开发人员，您可以使用 Rose Data Modeler 通过反向设计现有数据库模式或 DDL
    脚本对数据库进行建模和设计。
</p>
<p>
    通过使用 Rational Rose Data Modeler 反向设计向导，您可以为 ANSI SQL 92 标准数据库或以下 DBMS 设计 DDL 脚本或数据库模式：
</p>
<ul>
    <li>
        DB2 DBMS 版本 MVS 和 UDB
    </li>
    <li>
        Oracle DBMS&nbsp;
    </li>
    <li>
        SQL Server DBMS&nbsp;
    </li>
    <li>
        Sybase Adaptive Server&nbsp;
    </li>
</ul>
<p>
    反向设计向导读取数据库模式或 DDL 文件，并创建包含所有加引号标识实体的名称的数据模型图。根据 DBMS、Rose Data Modeler“反向设计向导”对数据模型图中的表、表之间的关系、存储过程、索引以及触发器建模。
</p>
<p>
    在数据模型图中，您可以添加表，定义关系、索引和域，并对元素应用第三方普通格式，然后将该数据模型转换成对象模型，或者正向设计该数据模型以生成 DDL 脚本或数据库模式。&nbsp;
</p></td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
